package com.frame.jfinal.validator;

import com.jfinal.core.Controller;
import com.jfinal.ext.render.CaptchaRender;
import com.jfinal.validate.Validator;
import com.system.model.User;


/*******************************************
 * 作用描述：登录验证组件
 *******************************************
 * @author LRC
 * @createDate 2015-9-12
 * @version v1.0 
 * @updateRecord 格式：时间，作者，修改说明
 *******************************************
 * 
 */
public class LoginValideValidator extends Validator{
	public static int maxFailedNum = 5;
	
	@Override
	protected void validate(Controller c) {
		String userCode = c.getPara("userCode");
		//验证关键登录信息
		validateString("userCode", 5, 20, "message", "登录参数异常!");
		//验证是否已经被锁定
		if(User.dao.isLocked(userCode)){
			addError("message", "登录失败，账号已被锁定，请稍等片刻后重试！");
			addError("result", "false");
			return;
		}
		//取消验证码验证
		if(1==1)return;
		String validateCode = c.getPara("validateCode");
		if(validateCode!=null)validateCode=validateCode.toUpperCase();
		//采用jfinal自带的验证码机制，使用到cookie
		//boolean valid = CaptchaRender.validate(c, validateCode, "validateCode");
		Object _validateCode =  c.getRequest().getSession().getAttribute("validateCode");
		boolean valid = validateCode.equals(_validateCode);
		if(!valid){
			addError("message", "验证码输入有误!");
			addError("result", "false");
			return;
		}
		//token验证，即页面只能提交一次，提高安全性，但是影响用户体验
		//validateToken("message", "登录请求失效，请刷页面！");
	}

	@Override
	protected void handleError(Controller c) {
		c.keepPara("userCode");
		c.renderJson();
	}


}
